Multi-core processors have emerged as a mainstream computing platform in major market segments, including personal computer (PC), server, and embedded domains. As the number of processor cores on a given chip increase, so too does the potential demand on that chip's local memory. When the processor executes an instruction, for example, the processor first looks at its on-chip cache to find the data associated with that instruction to avoid performing a more time-consuming search for the data elsewhere (e.g., off-chip or on a main memory chip). Commercial multi-core processors often use cache designs from uni-processors. Thus, multi-core processors may share a single cache. With multiple cores, multiple incoming application streams may interfere with each other while seeking shared cache space, and as a result, may cause a shared cache, and, thus, the processor to operate inefficiently. Other factors relating to multiple cores may also reduce efficiency.
Not all applications, however, benefit from the availability of cache resources. One example is a streaming application, where data is fetched into the cache, processed, and then is unlikely to be reused. Thus, different types of applications sharing cache space with equal priority may result in sub-optimal allocation of cache resources. Conflict among processor cores for the use of a shared cache may be expensive in terms of both latency and power as a result of additional requests to off-chip memory.